home *** CD-ROM | disk | FTP | other *** search
/ Cre@te Online 2000 December / Cre@teOnline CD05.iso / MacSoft / XML ConsoleMax.sea / XML ConsoleMax / Required / esc.jar / com / extensibility / convert / ImportClassAction.class (.txt) < prev    next >
Encoding:
Java Class File  |  2000-06-30  |  4.9 KB  |  130 lines

  1. package com.extensibility.convert;
  2.  
  3. import com.extensibility.app.DialogFactory;
  4. import com.extensibility.app.UI;
  5. import com.extensibility.rock.FileLoader;
  6. import com.extensibility.xa.SchemaDoc;
  7. import com.extensibility.xml.AttributeDeclaration;
  8. import com.extensibility.xml.BaseDeclaration;
  9. import com.extensibility.xml.ContentModelTerm;
  10. import com.extensibility.xml.ElementDeclaration;
  11. import com.extensibility.xml.TypeRef;
  12. import com.extensibility.xml.dt.DataTypeFactory;
  13. import java.awt.Dialog;
  14. import java.awt.Frame;
  15. import java.io.File;
  16. import java.lang.reflect.Field;
  17. import java.util.Enumeration;
  18.  
  19. public class ImportClassAction extends BaseImportAction {
  20.    public ImportClassAction(SchemaDoc var1) {
  21.       super(var1, "import.item.class");
  22.    }
  23.  
  24.    public void importClass(Class var1, ImportClassOptions var2) {
  25.       String var3 = var1.getName();
  26.       var3 = var2.shortNames ? var3.substring(var3.lastIndexOf(46) + 1) : var3;
  27.       ElementDeclaration var4 = super.doc.getNamedElement(var3);
  28.       if (var4 == null) {
  29.          var4 = new ElementDeclaration(var3);
  30.          super.doc.insertDeclaration(var4, (BaseDeclaration)null);
  31.       }
  32.  
  33.       var4.setContentModel(false, !var2.modelAsAttributes);
  34.       Field[] var6 = var1.getDeclaredFields();
  35.  
  36.       for(int var7 = 0; var7 < var6.length; ++var7) {
  37.          Class var8 = var6[var7].getType();
  38.          boolean var9 = var8.isArray();
  39.          if (var9) {
  40.             var8 = var8.getComponentType();
  41.          }
  42.  
  43.          String var10 = var6[var7].getName();
  44.          String var11 = var8.getName();
  45.          boolean var12 = var11.indexOf("java") == 0;
  46.          var11 = var2.shortNames ? var11.substring(var11.lastIndexOf(46) + 1) : var11;
  47.          Object var5;
  48.          if (!var2.modelAsAttributes && (!var2.modelAsMixed || !var12)) {
  49.             if (var2.recurse && var10.equalsIgnoreCase(var11)) {
  50.                var10 = var11;
  51.             }
  52.  
  53.             ContentModelTerm var13 = new ContentModelTerm(new TypeRef(var10), (char)(var9 ? '+' : '\u0000'), ',');
  54.             var4.getContentModel().getRootGroup().addTerm(var13);
  55.             if (var2.recurse && super.doc.getNamedElement(var11) == null && !var12 && !var8.isPrimitive()) {
  56.                this.importClass(var8, var2);
  57.                var5 = new ElementDeclaration(var10, DataTypeFactory.createDataTypeFromClass(var8, var11));
  58.             } else {
  59.                var5 = new ElementDeclaration(var10, DataTypeFactory.createDataTypeFromClass(var8, var11));
  60.             }
  61.          } else {
  62.             if (var4.getAttribute(var10) != null) {
  63.                var5 = null;
  64.             } else {
  65.                var5 = new AttributeDeclaration(var4, var10, DataTypeFactory.createDataTypeFromClass(var8, var11), var8.isPrimitive(), (String)null);
  66.             }
  67.  
  68.             if (var2.recurse && super.doc.getNamedElement(var11) == null && !var12 && !var8.isPrimitive()) {
  69.                this.importClass(var8, var2);
  70.             }
  71.          }
  72.  
  73.          if (var5 != null) {
  74.             super.doc.insertDeclaration((BaseDeclaration)var5, (BaseDeclaration)null);
  75.          }
  76.       }
  77.  
  78.    }
  79.  
  80.    public boolean doImport(Frame var1) {
  81.       File var2 = DialogFactory.askFile(var1, UI.getString("dialog.open.title", UI.getFileTypeName("class")), new String[]{"class"});
  82.       if (var2 == null) {
  83.          return false;
  84.       } else {
  85.          1 var3 = new 1(var1, (ImportClassAction)null);
  86.          FileLoader var4 = new FileLoader(var2, var3);
  87.          Enumeration var6 = null;
  88.          String var5;
  89.          if (var4.sourceIsArchive()) {
  90.             var5 = "";
  91.             var6 = var4.getClasses();
  92.          } else {
  93.             if (!var4.sourceIsClassFile()) {
  94.                DialogFactory.stop(var1, "stop.not.a.class.file");
  95.                return false;
  96.             }
  97.  
  98.             var5 = var4.qualifyName(var2);
  99.          }
  100.  
  101.          ImportClassDialog var7 = new ImportClassDialog(var1, var5, var6);
  102.          ((Dialog)var7).show();
  103.          ImportClassOptions var8 = var7.getOptions();
  104.          var5 = var7.getClassName();
  105.          if (var8 == null) {
  106.             return false;
  107.          } else {
  108.             try {
  109.                Class var9 = ((ClassLoader)var4).loadClass(var5);
  110.                if (var9 != null) {
  111.                   this.importClass(var9, var8);
  112.                   return true;
  113.                } else {
  114.                   boolean var15 = false;
  115.                   return var15;
  116.                }
  117.             } catch (ClassNotFoundException var11) {
  118.                DialogFactory.stop(var1, UI.getString("class.load.failure"));
  119.                boolean var14 = false;
  120.                return var14;
  121.             } catch (NoClassDefFoundError var12) {
  122.                DialogFactory.stop(var1, UI.getString("class.load.failure"));
  123.                boolean var10 = false;
  124.                return var10;
  125.             }
  126.          }
  127.       }
  128.    }
  129. }
  130.